#include "descriptor.h"

/* 18 bytes */
code u8 DeviceDescriptor[0x12] = {
	0x12, /* length */
	0x01, /* descriptor type, device_descriptor */

	0x10,
	0x01, /* usb version: usb01.10 */

	0x00, /* deviceClass, unused */
	0x00, /* deviceSubClass, unused */
	0x00, /* deviceProtocol, unused */

    	0x10, /* maxPkgSize, 16bytes */

	0x27,
	0x95, /* vender id, 0x9527 */

	0x03,
	0x00, /* product id */

	0x00,
	0x01, /* bcdDevice */

	0x01, /* iManfacturer string index*/
	0x02, /* product string index */
	0x03, /* SerialNumber string index */

	0x01, /* num of Configurations */
};

code u8 ConfigurationDescriptor[9+9+9+7+7] = {
	/* configuration desc */
	0x09, /* configuration desc size */
	0x02, /* desc type: configuration desc */
	sizeof(ConfigurationDescriptor)&0xFF,       /* low 8bytes of totaly size of ConfigurationDescriptor   */
	(sizeof(ConfigurationDescriptor)>>8)&0xFF,  /* high 8bytes */
	0x01, /* num of interfaces */
	0x01,
	0x00, /* string index, no string */
	0x80,
	0x32, /* max I = 0x32*2mA */

	/* interface desc */
	0x09, /* length */
	0x04, /* desc type: interface desc */
	0x00, /* number of interface, start from 0 */
	0x00,
	0x01, /* num of not endp0 */
	0x03, /* interface class, HID_class is 0x03 */
	0x01, /* interface sub class */
	0x01, /* interface protocol, keyboard is 0x01 */
	0x00, /* string index, no string */

	/* HID desc */
	0x09, /* length */
	0x21, /* desc type: HID desc */
	0x10,0x01, /* HID version: HID01.10 */
	0x21, /* country code, USA */
	0x01, /*  */
	0x22, 
	sizeof(ReportDescriptor)&0xFF,  /* ReportDescriptor size */
	(sizeof(ReportDescriptor)>>8)&0xFF,

	/* input endpoint desc */
	0x07, /* length */
	0x05, /* desc type: endpoint desc */
	0x81, /* 8:IN, 1:endp1 */
	0x03, /* interrupt endpoint */
	0x10,0x00, /* max pkg_size of the endpoint */
	0x0a, /* interrupt scan time: 0x0a->10ms */

	/* output endpoint desc */
	0x07, /* length */
	0x05, /* desc type: endpoint desc */
	0x01, /* bit7:0,input, bit0:endpoint address, endpoint1 */
	0x03, /* interrupt endpoint */
	0x10,0x00, /* max pkg_size of the endpoint */
	0x0a /* interrupt scan time: 0x0a->10ms */
};

code u8 ReportDescriptor[65] = {
	0x05,0x01,
	0x09,0x06,
	0xa1,0x01,
	0x05,0x07,
	0x19,0xe0,
	0x29,0xe7,
	0x15,0x00,
	0x25,0x01,
	0x95,0x08,
	0x75,0x01,
	0x81,0x02,
	0x95,0x01,
	0x75,0x08,
	0x81,0x03,
	0x95,0x06,
	0x75,0x08,
	0x15,0x00,
	0x25,0xFF,
	0x05,0x07,
	0x19,0x00,
	0x29,0x65,
	0x81,0x00,
	0x25,0x01,
	0x95,0x05,
	0x75,0x01,
	0x05,0x08,
	0x19,0x01,
	0x29,0x05,
	0x91,0x02,
	0x95,0x01,
	0x75,0x03,
	0x91,0x03,
	0xc0
};

code u8 LanguageId[4] = {
	0x04,  /* length */
	0x03, /* desc type: string desc */
	0x09,0x04, /* USA */
};

/**************************************************/
/*********        本转换结果来自         **********/
/********* Http://computer00.21ic.org    **********/
/*********        作者: 电脑圈圈         **********/
/*********         欢迎大家使用          **********/
/*********    版权所有，盗版请写明出处   **********/
/**************************************************/

//http://computer00.21ic.org/user1/2198/archives/2007/42769.html
//字符串“Gm工厂”的Unicode编码
//8位小端格式
code u8 ManufacturerStringDescriptor[10]={
10,         //该描述符的长度为10字节
0x03,       //字符串描述符的类型编码为0x03
0x47, 0x00, //G
0x6d, 0x00, //m
0xe5, 0x5d, //工
0x82, 0x53 //厂
//注：请将最后一个多余的逗号删除
};

/**************************************************/
/*********        本转换结果来自         **********/
/********* Http://computer00.21ic.org    **********/
/*********        作者: 电脑圈圈         **********/
/*********         欢迎大家使用          **********/
/*********    版权所有，盗版请写明出处   **********/
/**************************************************/

//http://computer00.21ic.org/user1/2198/archives/2007/42769.html
//字符串“joker产品”的Unicode编码
//8位小端格式
code u8 ProductStringDescriptor[16]={
16,         //该描述符的长度为16字节
0x03,       //字符串描述符的类型编码为0x03
0x6a, 0x00, //j
0x6f, 0x00, //o
0x6b, 0x00, //k
0x65, 0x00, //e
0x72, 0x00, //r
0xa7, 0x4e, //产
0xc1, 0x54 //品
//注：请将最后一个多余的逗号删除
};

/**************************************************/
/*********        本转换结果来自         **********/
/********* Http://computer00.21ic.org    **********/
/*********        作者: 电脑圈圈         **********/
/*********         欢迎大家使用          **********/
/*********    版权所有，盗版请写明出处   **********/
/**************************************************/

//http://computer00.21ic.org/user1/2198/archives/2007/42769.html
//字符串“9527”的Unicode编码
//8位小端格式
code u8 SerialNumberStringDescriptor[10]={
10,         //该描述符的长度为10字节
0x03,       //字符串描述符的类型编码为0x03
0x39, 0x00, //9
0x35, 0x00, //5
0x32, 0x00, //2
0x37, 0x00 //7
//注：请将最后一个多余的逗号删除
};
